package cn.bugstack.chatgpt.data.domain.openai.annotation;

import cn.bugstack.chatgpt.data.domain.openai.service.rule.factory.DefaultLogicFactory;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE}) // 这个注解可以加在类、接口、枚举或注解定义上，不能用于方法或字段等。
@Retention(RetentionPolicy.RUNTIME) // 该注解在运行时仍然存在，程序运行时可以用 反射 获取它。
// 说明程序运行时可以扫描带有 @LogicStrategy 注解的类，并根据 logicMode 决定执行哪种策略

public @interface LogicStrategy {

    DefaultLogicFactory.LogicModel logicMode(); // 使用这个注解时必须传入一个 LogicModel 的枚举值或常量值。

    //例如使用时可能像这样：
    //
    //@LogicStrategy(logicMode = DefaultLogicFactory.LogicModel.SENSITIVE)
    //public class SensitiveFilterLogic implements LogicFilter<ChatProcessAggregate> {
    //    // ...
    //}
}
